package cn.iocoder.lw.module.core.dal.dataobject.project;

import cn.iocoder.lw.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.time.LocalDateTime;

/**
 * 核心-项目 DO
 *
 * @author Lw源码
 */
@TableName(value = "core_project")
@KeySequence("core_project_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CoreProjectDO extends BaseDO {

    private static final long serialVersionUID = 1L;

	/**
     * 项目编号，数据库自增
     */
    @TableId
    private Long id;

    /**
     * 项目名称
     */
    private String name;

    /**
     * 项目所属区域
     */
    private String areaId;

    /**
     * 项目地址
     */
    private String detailAddress;

    /**
     * 项目联系人
     */
    private String contactName;

    /**
     * 联系人手机号
     */
    private String contactMobile;

    /**
     * 代理商名称
     */
    private String agentName;

    /**
     * 渠道联系人
     */
    private String channelContactName;

    /**
     * 渠道手机号
     */
    private String channelContactMobile;

    /**
     * 服务商名称
     */
    private String serviceProviderName;

    /**
     * 服务商联系人
     */
    private String serviceProviderContactName;

    /**
     * 服务商手机号
     */
    private String serviceProviderContactMobile;

    /**
     * 项目类型（集中式/分散式）
     *
     * 枚举 {@link DictTypeConstants#PROJECT_TYPE}
     */
    private String projectType;

    /**
     * 房间数量
     */
    private Integer roomCount;

    /**
     * 维保有效期开始时间
     */
    private LocalDateTime maintenanceStartTime;

    /**
     * 维保有效期结束时间
     */
    private LocalDateTime maintenanceEndTime;

    /**
     * 维保结算类型（按次/按月）
     *
     * 枚举 {@link DictTypeConstants#MAINTENANCE_SETTLEMENT_TYPE}
     */
    private String maintenanceSettlementType;

    /**
     * 流量有效开始时间
     */
    private LocalDateTime trafficStartTime;

    /**
     * 流量有效结束时间
     */
    private LocalDateTime trafficEndTime;

    /**
     * 平台类型（私有化/可供/平台SAAS）
     *
     * 枚举 {@link DictTypeConstants#PLATFORM_TYPE}
     */
    private String platformType;

    /**
     * 维护有效开始时间
     */
    private LocalDateTime maintainStartTime;

    /**
     * 维护有效结束时间
     */
    private LocalDateTime maintainEndTime;

    /**
     * 负责人用户编号
     */
    private Long ownerUserId;

    /**
     * 备注
     */
    private String remark;

    /**
     * 项目状态
     *
     * 枚举 {@link DictTypeConstants#PROJECT_STATUS}
     */
    private Integer status;

}